﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace 教室客户端
{
    public partial class Form5 : Form
    {
        [DllImport("user32")]  
        private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);  
        //下面是可用的常量，根据不同的动画效果声明自己需要的  
        private const int AW_HOR_POSITIVE = 0x0001;//自左向右显示窗口，该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志  
        private const int AW_HOR_NEGATIVE = 0x0002;//自右向左显示窗口，该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志  
        private const int AW_VER_POSITIVE = 0x0004;//自顶向下显示窗口，该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志  
        private const int AW_VER_NEGATIVE = 0x0008;//自下向上显示窗口，该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志该标志  
        private const int AW_CENTER = 0x0010;//若使用了AW_HIDE标志，则使窗口向内重叠；否则向外扩展  
        private const int AW_HIDE = 0x10000;//隐藏窗口  
        private const int AW_ACTIVE = 0x20000;//激活窗口，在使用了AW_HIDE标志后不要使用这个标志  
        private const int AW_SLIDE = 0x40000;//使用滑动类型动画效果，默认为滚动动画类型，当使用AW_CENTER标志时，这个标志就被忽略  
        private const int AW_BLEND = 0x80000;//使用淡入淡出效果 


//         private delegate void AddNum(int x);
//         private void AddNumProc(int x)
//         {
//             chart1.Series[0].Points[x - 1].YValues[0] = (double)(++yValue[x - 1]);
//             chart1.ChartAreas[0].RecalculateAxesScale();
//         }
//         public void ExternAddNum(int x)
//         {
//             this.Invoke(new AddNum(AddNumProc),x);
//         }

        public bool bOk = false;
        int[] yValue;
        public void ExternAddNum(int x)
        {
//             this.Invoke((EventHandler)(delegate
//             {
                chart1.Series[0].Points[x - 1].YValues[0] = (double)(++yValue[x - 1]);
                chart1.ChartAreas[0].RecalculateAxesScale();
/*            }));*/

        }
        public Form5()
        {
            InitializeComponent();
            bOk = true;
            yValue = new int[5];
            for (int i = 0; i < 5; i++)
            {
                yValue[i] = 0;
                chart1.Series[0].Points.AddXY(i + 1, 0);
            }
        }

        private void Form5_Load(object sender, EventArgs e)
        {
            int x = Screen.PrimaryScreen.WorkingArea.Right - this.Width;  
            int y = Screen.PrimaryScreen.WorkingArea.Bottom - this.Height;  
            this.Location = new Point(x, y);//设置窗体在屏幕右下角显示  
            AnimateWindow(this.Handle, 1000, AW_SLIDE | AW_VER_NEGATIVE);            
        }

        private void Form5_FormClosing(object sender, FormClosingEventArgs e)
        {
            AnimateWindow(this.Handle, 500, AW_BLEND | AW_HIDE);
            bOk = false;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            chart1.Series[0].Points.Clear();
            for (int i = 0; i < 5; i++)
            {
                yValue[i] = 0;
                chart1.Series[0].Points.AddXY(i + 1, 0);
            }
        }
    }
}
// / <summary>  
//       / 窗体动画函数    注意：要引用System.Runtime.InteropServices;  
//       / </summary>  
//       / <param name="hwnd">指定产生动画的窗口的句柄</param>  
//       / <param name="dwTime">指定动画持续的时间</param>  
//       / <param name="dwFlags">指定动画类型，可以是一个或多个标志的组合。</param>  
//       / <returns></returns>
//             [DllImport("user32")]  
//             private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);  
//             //下面是可用的常量，根据不同的动画效果声明自己需要的  
//             private const int AW_HOR_POSITIVE = 0x0001;//自左向右显示窗口，该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志  
//             private const int AW_HOR_NEGATIVE = 0x0002;//自右向左显示窗口，该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志  
//             private const int AW_VER_POSITIVE = 0x0004;//自顶向下显示窗口，该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志  
//             private const int AW_VER_NEGATIVE = 0x0008;//自下向上显示窗口，该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志该标志  
//             private const int AW_CENTER = 0x0010;//若使用了AW_HIDE标志，则使窗口向内重叠；否则向外扩展  
//             private const int AW_HIDE = 0x10000;//隐藏窗口  
//             private const int AW_ACTIVE = 0x20000;//激活窗口，在使用了AW_HIDE标志后不要使用这个标志  
//             private const int AW_SLIDE = 0x40000;//使用滑动类型动画效果，默认为滚动动画类型，当使用AW_CENTER标志时，这个标志就被忽略  
//             private const int AW_BLEND = 0x80000;//使用淡入淡出效果  
//         
//         
//             private void FrmMsg_Load(object sender, EventArgs e)  
//             {  
//                 int x = Screen.PrimaryScreen.WorkingArea.Right - this.Width;  
//                 int y = Screen.PrimaryScreen.WorkingArea.Bottom - this.Height;  
//                 this.Location = new Point(x, y);//设置窗体在屏幕右下角显示  
//                 AnimateWindow(this.Handle, 1000, AW_SLIDE | AW_ACTIVE | AW_VER_NEGATIVE);  
//             }  
//             private void FrmMsg_FormClosing(object sender, FormClosingEventArgs e)  
//             {  
//                 AnimateWindow(this.Handle, 1000, AW_BLEND | AW_HIDE);  
//             }
